﻿using System;
using System.Linq;
using Utility.Persistence_Service;
using Utility.Persistence_Service.Implementations;

namespace Application_Core.Bauteil_Component.Data_Access_Layer.Implementations
{
    internal class StücklisteRepositoryImpl : RepositoryImpl<Stückliste>, StücklisteRepository
    {
        public StücklisteRepositoryImpl(UnitOfWork unitOfWork)
            : base(unitOfWork) { }

        /// <summary>
        /// Gibt die gültige Stückliste zu einem Bauteil zurück.
        /// </summary>
        /// <param name="bauteil">Bauteil</param>
        /// <returns>Stückliste | null</returns>
        public Stückliste FindByBauteil(Bauteil bauteil)
        {
            // TODO: mit compareTo arbeiten
            //&& s.GueltigAb <= DateTime.Now
            //&& DateTime.Now <= s.GueltigBis
            return (from s in this.unitOfWork.Query<Stückliste>() where s.Bauteil == bauteil select s)
                .FirstOrDefault() ?? null;
        }
    }
}
